﻿USE SV_MH_LH_GV_DKH
GO

--1.	Liệt kê các sinh viên có đăng ký đồng thời các môn X, Y
SELECT SINHVIEN_MA,SINHVIEN_TEN,SINHVIEN_DIACHI,SINHVIEN_NGAYSINH,SINHVIEN_GIOITINH,LOP_MA
FROM SINHVIEN,LOP
WHERE SINHVIEN.LOPID=LOP.LOP_ID
	AND SINHVIEN_ID IN (SELECT SINHVIENID FROM DANGKYHOC
						INNER JOIN MONHOC
						ON DANGKYHOC.MONHOCID=MONHOC.MONHOC_ID
						WHERE MONHOC_TEN=N'MHX' OR MONHOC_TEN=N'MHY')

--2.	Liệt kê các giáo viên dạy từ 5 lớp trở lên
SELECT GIAOVIEN_TEN
FROM GIAOVIEN
WHERE GIAOVIEN_ID IN (SELECT GIAOVIENID FROM DAY
					  GROUP BY GIAOVIENID
					  HAVING COUNT(LOPID) >= 5)

--3.	Liệt kê các giáo viên dạy ít nhất một lớp có 30 sinh viên trở lên
SELECT GIAOVIEN_TEN
FROM GIAOVIEN
WHERE GIAOVIEN_ID IN (SELECT GIAOVIENID FROM DAY
						INNER JOIN LOP ON DAY.LOPID=LOP.LOP_ID
						INNER JOIN SINHVIEN ON LOP.LOP_ID=SINHVIEN.LOPID
					  GROUP BY SINHVIEN.LOPID,GIAOVIENID
					  HAVING COUNT(SINHVIEN.LOPID)>=30)
					  
--4.	Liệt kê các môn học của giáo viên G mà sinh viên A đăng ký
SELECT MONHOC_MA,MONHOC_TEN
FROM MONHOC
WHERE MONHOC_ID IN (SELECT MONHOCID FROM DAY,GIAOVIEN
				    WHERE DAY.GIAOVIENID=GIAOVIEN.GIAOVIEN_ID
					  AND GIAOVIEN_TEN=N'GVG')
	AND MONHOC_ID IN (SELECT MONHOCID FROM DANGKYHOC
					    INNER JOIN SINHVIEN ON DANGKYHOC.SINHVIENID=SINHVIEN.SINHVIEN_ID
					  WHERE SINHVIEN_TEN=N'A')